Java Generics - 类本身的子类?
全部标签 我习惯于在其他编程环境中对窗口类进行子类化,但在java教程中我通常会看到类似的东西JPanelp=newJPanel();p.setLayout(newBoxLayout(p,BoxLayout.PAGE_AXIS));p.add(aComponent);p.add(anotherComponent);那么Java中关于子类化顶级容器类的约定是什么? 最佳答案 使用与所有Java类相同的原则。如果您正在修改或扩展行为或功能,那么一定要扩展JPanel或JFrame。诀窍是仔细考虑并决定你是否真的要添加任何东西。在大多数情况下,当我
我有一个类classReceipt{privateSetorders;publicReceipt(Setorders){this.orders=ImmutableSet.copyOf(orders)}}这对我很有帮助。但是,由于我面临一些类型删除和持久性问题,我现在想介绍一种形式classOrderSetextendsSet{}显然我不能扩展Set,因为它是一个接口(interface)。我想让我的实现保持不变。但是,我无法扩展ImmutableSet,正如文档所述:Note:Althoughthisclassisnotfinal,itcannotbesubclassedoutside
我有一个父类(superclass),我想在我的子类中使用这个父类(superclass)中的一个变量。这怎么可能? 最佳答案 只需将字段设置为protected,这意味着它应该对所有派生类可见。 关于java-如何使用从父类(superclass)到子类的变量?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/16992452/
我想知道为什么这首先在Java中被允许(或者通常是oops)我记得静态方法对于父类和子类都是通用的publicclassRedefineextendsParent{publicstaticvoidtest(){}}classParent{publicstaticvoidtest(){}}Q1:既然静态方法不支持重写,那么两个类如何包含相同的方法?Q2:如果将静态方法更改为抛出未定义的异常,则无法编译。为什么会这样。它显然不是压倒一切的,所以我应该被允许抛出新的异常,对吧?publicclassRedefineextendsParent{publicstaticvoidtest()thr
我试图通过使用父方法但从子类中显示父类的变量值。publicclassA{publicstaticvoidmain(String[]args){Parentp1=newParent();p1.input();}}classParent{privateStringname;publicvoidsetName(StringnewName){name=newName;}publicStringgetName(){returnname;}publicvoidinput(){Stringq="hi";setName(q);Childc1=newChild();c1.input();}}class
在Java中,我定义了一个抽象类,里面既有具体的方法,也有抽象的方法,而且必须由第三方开发者独立子类化。只是为了确定:我是否可以对抽象类进行任何更改,使其与它们的类源代码兼容但二进制不兼容?换句话说:在他们编译了他们的子类之后,我可以改变抽象类-除了例如向其中添加一个抽象方法或从中删除一个由子类调用的protected方法,这些子类当然是源代码不兼容的——以一种可能迫使他们重新编译其子类的方式? 最佳答案 如果现在更改您的系统还为时不晚,我建议您这样做。覆盖通常不是自定义功能的好方法,因为它非常脆弱。例如,如果您稍后使用您的客户使用
Java代码:classP{publicvoidhello(){}}classCextendsP{publicvoidhello(Strings){}}我的问题是:类C中的hello是否重载了父类(superclass)P中的同名对象?我的friend说他们不是因为他们不在同一个类(class)。 最佳答案 采用更正式的方法,Java7的Java语言规范指出:Iftwomethodsofaclass(whetherbothdeclaredinthesameclass,orbothinheritedbyaclass,oronedecl
我一直在学习继承,我只是好奇。我知道即使您不使用super()运算符,子类也会自动调用父类(superclass)的构造函数,所以我想知道子类是否有必要在其中包含构造函数. 最佳答案 如果父类(superclass)没有默认构造函数(或具有子类无法访问的构造函数),则子类需要一个构造函数。如果子类根本没有构造函数,编译器将自动创建一个public构造函数,它只是调用父类(superclass)的默认构造函数。关于调用super():每个构造函数必须做的第一件事是通过调用this()(可能带有一些参数)来调用同一类中的不同构造函数)或
我的类正在实现一个返回List的父类(superclass)方法.返回的列表是只读的:publicabstractclassSuperClass{publicabstractListgetComponents();}在我的类(class)中,我想返回一个声明为列表的字段——即一个子列表:publicclassSubClassextendsSuperClass{privateListbuttons;publicListgetComponents(){returnbuttons;}}这会产生一个编译器错误,如List不是List的子类型.我能理解为什么它不能编译,因为不允许将JTextFi
在java中实现单例的最常见方法是使用具有以下形式的公共(public)访问器方法的私有(private)构造函数--publicclassSingleton{privatestaticSingletoninstance=null;privateSingleton(){}publicstaticsynchronizedSingletongetInstance(){if(instance==null){instance=newSingleton();}returninstance;}}但是,由于构造函数是私有(private)的,因此它阻止了对单例的子类化。有什么方法可以创建允许子类化的